
-- 获取距离下周一剩余时间戳的函数
function getTimeToNextMonday(currentTime)
    
    -- 获取当前时间的详细信息
    local currentDate = os.date("*t", currentTime)
    
    -- 计算当前是星期几 (1=星期一, 2=星期二, ..., 7=星期日)
    -- os.date 中 wday 是 1=星期日, 2=星期一, ..., 7=星期六
    -- 需要转换为 1=星期一的格式
    local currentWeekday = currentDate.wday == 1 and 7 or (currentDate.wday - 1)
    
    -- 计算距离下周一还有多少天
    local daysToNextMonday = 8 - currentWeekday
    
    -- 计算下周一0点的时间戳
    local nextMondayMidnight = os.time({
        year = currentDate.year,
        month = currentDate.month,
        day = currentDate.day + daysToNextMonday,
        hour = 0,
        min = 0,
        sec = 0
    })
    
    -- 计算剩余时间戳（秒数）
    local remainingTime = nextMondayMidnight - currentTime
    
    return remainingTime
end

-- 获取距离下一月1号剩余时间戳的函数
function getTimeToNextMonth(currentTime)
    
    -- 获取当前时间的详细信息
    local currentDate = os.date("*t", currentTime)
    
    -- 计算下个月的年份和月份
    local nextMonth = currentDate.month + 1
    local nextYear = currentDate.year
    
    -- 如果当前是12月，下个月就是明年1月
    if nextMonth > 12 then
        nextMonth = 1
        nextYear = nextYear + 1
    end
    
    -- 计算下个月1号0点的时间戳
    local nextMonthFirst = os.time({
        year = nextYear,
        month = nextMonth,
        day = 1,
        hour = 0,
        min = 0,
        sec = 0
    })
    
    -- 计算剩余时间戳（秒数）
    local remainingTime = nextMonthFirst - currentTime
    
    return remainingTime
end


-- 获取距离明天剩余时间戳的函数
function getTimeToTomorrow(currentTime)
    
    -- 获取当前时间的详细信息
    local currentDate = os.date("*t", currentTime)
    
    -- 计算明天0点的时间戳
    local tomorrowMidnight = os.time({
        year = currentDate.year,
        month = currentDate.month,
        day = currentDate.day + 1,
        hour = 0,
        min = 0,
        sec = 0
    })
    
    -- 计算剩余时间戳（秒数）
    local remainingTime = tomorrowMidnight - currentTime
    
    return remainingTime
end


-- 辅助函数：将秒数转换为可读格式
function formatRemainingTime(seconds)
    local days = math.floor(seconds / 86400)
    local hours = math.floor((seconds % 86400) / 3600)
    local minutes = math.floor((seconds % 3600) / 60)
    local secs = seconds % 60
    
    --return string.format("%d天 %d小时 %d分钟 %d秒", days, hours, minutes, secs)
    return string.format("%d天 %d小时 %d分钟", days, hours, minutes)
end

-- 测试函数
function testGetTimeToNextMonday()
    local remainingSeconds = getTimeToNextMonday(os.time())
    local formattedTime = formatRemainingTime(remainingSeconds)
    
    print("距离下周一剩余时间戳（秒）: " .. remainingSeconds)
    print("距离下周一剩余时间: " .. formattedTime)
    
    -- 也可以显示下周一的具体日期
    local nextMondayDate = os.date("%Y年%m月%d日 00:00:00", os.time() + remainingSeconds)
    print("下周一日期: " .. nextMondayDate)
end

-- 测试下一月1号函数
function testGetTimeToNextMonth()
    local remainingSeconds = getTimeToNextMonth(os.time())
    local formattedTime = formatRemainingTime(remainingSeconds)
    
    print("距离下一月1号剩余时间戳（秒）: " .. remainingSeconds)
    print("距离下一月1号剩余时间: " .. formattedTime)
    
    -- 也可以显示下一月1号的具体日期
    local nextMonthDate = os.date("%Y年%m月%d日 00:00:00", os.time() + remainingSeconds)
    print("下一月1号日期: " .. nextMonthDate)
end

-- 调用测试函数
-- testGetTimeToNextMonday()
-- testGetTimeToNextMonth()
